﻿using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Descripción breve de Marca
/// </summary>
public class Marca : Conexion
{
    private int id;
    private String marca;
    private String estado;
    public Marca()
    {

    }

    /**
     * Registra una marca en la base de datos
     */
    public void Guardar()
    {
        SentenciaSQL = "insert into marca(id_marca, marca, estado) values(nextval('sq_marca'), '" + Nombre + "','" + Estado + "');";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudo registrar la marca", ex);
        }
        finally {
            CerrarConexion();
        }
    }


    /**
     * Actualiza los datos de una marca
     */
    public void Actualizar()
    {
        AbrirConexion();
        IniciarTransaccion();
        try
        {        
            SentenciaSQL = "update marca set marca = '"+ Nombre+"', estado = '" + Estado + "' where id_marca = " + Id + ";";
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (ConexionException ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al intentar modificiar la marca", ex);
        }
        finally
        {
            CerrarConexion();
        }

    }

    /*
    * Borra una marca
    * Cambia el estado de la marca a 'b' -> borrado
    */
    public void Borrar()
    {
        SentenciaSQL = "update marca set estado = 'b' where id_marca = " + Id + " ;";

        AbrirConexion();
        IniciarTransaccion();
        try
        {
            EjecutarComando();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudo eliminar la marca", ex);
        }
        finally
        {
            CerrarConexion();
        }
    }

    /**
    * Busca las marca que coinciden con los parametros de busqueda
    * @param marca la marca a buscar
    * @returm dataset con el resultado de la busqueda
    */
    public DataSet Buscar(String marca)
    {
        DataSet ds = new DataSet();

        SentenciaSQL = "select * from marca where estado <> 'b' and marca like '%" + marca + "%';";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("ocurrio un error al realizar la busqueda", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }
    /**
     * Lista todos los registros
     */
    public DataSet Listar()
    {
        DataSet ds = new DataSet();

        SentenciaSQL = "select * from marca where estado <> 'b' order by marca;";
        AbrirConexion();
        IniciarTransaccion();
        try
        {
            ds = EjecutarComandoDataSet();
            ConfirmarTransaccion();
        }
        catch (Exception ex)
        {
            CancelarTransaccion();
            throw new ConexionException("no se pudieron listar los registros", ex);
        }
        finally
        {
            CerrarConexion();
        }

        return ds;

    }
    
    public int Id 
    {
        get { return this.id; }
        set { this.id = value; }
    }
    public String Nombre
    {
        get { return this.marca; }
        set { this.marca = value; }
    }

    public String Estado
    {
        get { return this.estado; }
        set { this.estado = value; }
    }

}
